﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;

namespace Z16.BLI
{
    public class Tarefa
    {
        #region "Variaveis"

        private long intCod_Tarefa;
        public long IntCod_Tarefa
        {
            get { return intCod_Tarefa; }
            set { intCod_Tarefa = value; }
        }

        private string strNomeTarefa;
        public string StrNomeTarefa
        {
            get { return strNomeTarefa; }
            set { strNomeTarefa = value; }
        }

        private DateTime dtInclusao;
        public DateTime DtInclusao
        {
            get { return dtInclusao; }
            set { dtInclusao = value; }
        }


        private DateTime dtInicio;
        public DateTime DtInicio
        {
            get { return dtInicio; }
            set { dtInicio = value; }
        }

        private DateTime dtTermino;
        public DateTime DtTermino
        {
            get { return dtTermino; }
            set { dtTermino = value; }
        }

        private long intCodUsuInclusao;
        public long IntCodUsuInclusao
        {
            get { return intCodUsuInclusao; }
            set { intCodUsuInclusao = value; }
        }

        private long intCodAtividade;
        public long IntCodAtividade
        {
            get { return intCodAtividade; }
            set { intCodAtividade = value; }
        }

        #endregion

        #region "Metodos"

        /// <summary>
        /// Seleciona todas as Tarefas de uma Atividade.
        /// </summary>
        /// <returns></returns>
        public DataTable listartarefas(long? CodAtividade, long? codTarefa, string nmTarefa, DateTime? dtIni, DateTime? dtFim)
        {
            List<Tarefa> tarefas = new List<Tarefa>();
            Tarefa tarefa = new Tarefa();

            DataTable dttarefa = new DataTable();

            try
            {
                SqlParameter[] pms =
                    {
                        new SqlParameter("@codAtividade", CodAtividade),
                        new SqlParameter("@codTarefa", codTarefa),
                        new SqlParameter("@tarefa",nmTarefa),
                        new SqlParameter("@dtIni",dtIni),
                        new SqlParameter("@dtFim",dtFim)
                    };

                SqlDataReader drAtividade = SqlHelper.ExecuteReader(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procSelTarefa", pms);

                dttarefa.Load(drAtividade);
            }
            catch (Exception ex)
            {
                throw;
            }
            return dttarefa;

        }

        /// <summary>
        /// Seleciona todas as Tarefas de uma Atividade.
        /// </summary>
        /// <returns></returns>
        public DataTable listarStatustarefas(long? codTarefa)
        {
            List<Tarefa> tarefas = new List<Tarefa>();
            Tarefa tarefa = new Tarefa();

            DataTable dttarefa = new DataTable();

            try
            {
                SqlParameter[] pms =
                    {
                        new SqlParameter("@codTarefa", codTarefa)
                    };

                SqlDataReader drAtividade = SqlHelper.ExecuteReader(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procSelStatusTarefa", pms);

                dttarefa.Load(drAtividade);
            }
            catch (Exception ex)
            {
                throw;
            }
            return dttarefa;

        }

        /// <summary>
        ///  Inclusao inicial Atividade no sistema.
        /// </summary>

        public string incTarefa(string strNome_Tarefa,
                                            DateTime dtInclusao,
                                            DateTime dtInicio,
                                            DateTime dtTermino,
                                            int intCodUsuInclusao,
                                            int? intCodAtividade,
                                            int? codTarefa,
                                            string espcTarefa
                                            )
        {
            try
            {

                SqlParameter[] pms =
                    {
                        new SqlParameter("@Nome_Tarefa", strNome_Tarefa),
                        new SqlParameter("@Data_Inclusao", dtInclusao),
                        new SqlParameter("@Data_Inicio", dtInicio),
                        new SqlParameter("@Data_Fim", dtTermino),
                        new SqlParameter("@Cod_Usuario_Inclusao", intCodUsuInclusao),
                        new SqlParameter("@Cod_Atividade", intCodAtividade),
                        new SqlParameter("@Cod_Tarefa", intCod_Tarefa),
                        new SqlParameter("@Espec_Tarefa", espcTarefa)

                    };

                if (codTarefa == null)
                {
                    SqlHelper.ExecuteNonQuery(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procIncTarefa", pms);

                    return "0;Tarefa cadastrada com sucesso!";
                }
                else
                {
                    SqlHelper.ExecuteNonQuery(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procEditTarefa", pms);

                    return "0;Tarefa editada com sucesso!";
                }
            }
            catch (Exception ex)
            {
                return "1;Erro ao inserir Tarefa: " + ex.Message;

            }
        }

        /// <summary>
        ///  Inicia uma determinada tarefa.
        /// </summary>

        public string iniciaTarefa(int? codTarefa)
        {
            try
            {

                SqlParameter[] pms =
                    {
                        new SqlParameter("@COD_TAREFA", codTarefa) 
                    };

                SqlHelper.ExecuteNonQuery(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procIniciaTarefa", pms);
                return "0;Tarefa iniciada com sucesso!";
            }
            catch (Exception ex)
            {
                return "1;Erro ao iniciar Tarefa: " + ex.Message;
            }
        }

        /// <summary>
        ///  Finaliza uma determinada tarefa.
        /// </summary>

        public string finalizaTarefa(int? codTarefa)
        {
            try
            {

                SqlParameter[] pms =
                    {
                        new SqlParameter("@COD_TAREFA", codTarefa) 
                    };

                SqlHelper.ExecuteNonQuery(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procFinalizaTarefa", pms);
                return "0;Tarefa finalizada com sucesso!";
            }
            catch (Exception ex)
            {
                return "1;Erro ao finalizar Tarefa: " + ex.Message;
            }
        }

        #endregion
    }
}